/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucsur.tp.colegio.daos;

import edu.ucsur.tp.colegio.beans.AlumnoBean;
import edu.ucsur.tp.colegio.beans.DistritoBean;
import edu.ucsur.tp.colegio.beans.ProvinciaBean;
import edu.ucsur.tp.colegio.beans.RegionBean;
import edu.ucsur.tp.colegio.beans.SexoBean;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import edu.ucsur.tp.colegio.connections.DBConnection;

/**
 *
 * @author Administrador
 */
public class MySqlAlumnoSchoolDao {
    
    public AlumnoBean getAlumnos(String txtCodigoAlumno){
        
           String sql = "SELECT * FROM alumno WHERE CodigoAlumno = ?";
          
      try {
      //1. Obtener la conexi�n
      Connection conn = DBConnection.getConnection();
      
      //2. Obtenemos la sentencia Java (PreparedStatement)
      PreparedStatement pstmt = conn.prepareStatement(sql);
      //-- 2.1. Setear los par�metros din�micos
      pstmt.setString(1, txtCodigoAlumno);
      //3. Ejecutar la sentencia (se recupera en un cursor)
      ResultSet rs = pstmt.executeQuery();
      //4. Recorriendo el cursor
      if (rs.next()) {
        AlumnoBean alumno = new AlumnoBean();
        
        alumno.setTxtCodigoAlumno(rs.getString("CodigoAlumno"));
        alumno.setTxtNombreAlumno(rs.getString("NombreAlumno"));
        alumno.setTxtApePaterAlumno(rs.getString("ApePaterAlumno"));
        alumno.setTxtApeMaterAlumno(rs.getString("ApeMaterAlumno"));
        alumno.setTxtFecNacAlumno(rs.getDate("FecNacAlumno"));
        alumno.setSexo(new SexoBean(rs.getString("codigosexo"), "codigosexo"));
        alumno.setTxtTutorAlumno(rs.getString("TutorAlumno"));
        alumno.setTxtEmailTutorAlumno(rs.getString("EmailTutorAlumno"));
        alumno.setTxttelefonoTutorAlumno(rs.getString("telefonoTutorAlumno"));
        alumno.setCodigoprovincia(new ProvinciaBean(rs.getString("codigoprovincia"), "codigoprovincia"));
        alumno.setCodigoregion(new RegionBean(rs.getString("codigoregion"), "codigoregion"));
        alumno.setCodigodistrito(new DistritoBean(rs.getString("codigodistrito"), "codigodistrito"));
        return alumno;
      }
      //5. Cerrando los recursos JDBC
      rs.close();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return null;
           
    }
        
    // public List<AlumnoBean>
    
     public List<AlumnoBean> getListaAlumnoPorFiltros(String filtroNombre, String filtroApepaterno) {
    List<AlumnoBean> listaAlumno = new ArrayList<AlumnoBean>();
    
    String sql = "SELECT * FROM alumno WHERE NombreAlumno like ? AND ApePaterAlumno like ?";
    try {
      //1. Obtener la conexi�n
      Connection conn = DBConnection.getConnection();
      //2. Obtenemos la sentencia Java (PreparedStatement)
      PreparedStatement pstmt = conn.prepareStatement(sql);
      //-- 2.1. Setear los par�metros din�micos
      pstmt.setString(1, "%" + filtroNombre + "%");
      pstmt.setString(2, "%" + filtroApepaterno + "%");
      //3. Ejecutar la sentencia (se recupera en un cursor)
      ResultSet rs = pstmt.executeQuery();
      //4. Recorriendo el cursor
      while (rs.next()) {
        AlumnoBean alumno = new AlumnoBean();
        alumno.setTxtCodigoAlumno(rs.getString("CodigoAlumno"));
        alumno.setTxtNombreAlumno(rs.getString("NombreAlumno"));
        alumno.setTxtApePaterAlumno(rs.getString("ApePaterAlumno"));
        alumno.setTxtApeMaterAlumno(rs.getString("ApeMaterAlumno"));
        alumno.setTxtFecNacAlumno(rs.getDate("FecNacAlumno"));
        alumno.setSexo(new SexoBean(rs.getString("codigosexo"), "codigosexo"));
        alumno.setTxtTutorAlumno(rs.getString("TutorAlumno"));
        alumno.setTxtEmailTutorAlumno(rs.getString("EmailTutorAlumno"));
        alumno.setTxttelefonoTutorAlumno(rs.getString("telefonoTutorAlumno"));
        alumno.setCodigoprovincia(new ProvinciaBean(rs.getString("codigoprovincia"), "codigoprovincia"));
        alumno.setCodigoregion(new RegionBean(rs.getString("codigoregion"), "codigoregion"));
        alumno.setCodigodistrito(new DistritoBean(rs.getString("codigodistrito"), "codigodistrito"));
        listaAlumno.add(alumno);
      }
      //5. Cerrando los recursos JDBC
      rs.close();
      pstmt.close();
      conn.close();
      //6. Devolver la lista
      return listaAlumno;
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return null;
  }
      
   public void insertar(AlumnoBean alumno) {
    String sql = "INSERT INTO alumno ( IDEduc, CodigoAlumno, NombreAlumno, ApePaterAlumno, ApeMaterAlumno, FecNacAlumno, TutorAlumno, EmailTutorAlumno, telefonoTutorAlumno ) ";
    sql += " VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ? ) ";
    try {
      //1. Obtener la conexi�n
      Connection conn = DBConnection.getConnection();
      //2. Obtenemos la sentencia Java (PreparedStatement)
      PreparedStatement pstmt = conn.prepareStatement(sql);
      //-- 2.1. Setear los par�metros din�micos
      pstmt.setString(1, alumno.getTxtIDEduc());
      pstmt.setString(2, alumno.getTxtCodigoAlumno());
      pstmt.setString(3, alumno.getTxtNombreAlumno());
      pstmt.setString(4, alumno.getTxtApePaterAlumno());
      pstmt.setString(5, alumno.getTxtApeMaterAlumno());
      pstmt.setDate(6, new java.sql.Date(alumno.getTxtFecNacAlumno().getTime()));
      pstmt.setString(7, alumno.getTxtTutorAlumno());
      pstmt.setString(8, alumno.getTxtEmailTutorAlumno());
      pstmt.setString(9, alumno.getTxttelefonoTutorAlumno());
      //3. Ejecutar la sentencia (se recupera en un cursor)
      pstmt.executeUpdate();
      //7. Cerrando los recursos JDBC
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  } 
   
   public void eliminar(String CodigoAlumno) {
    String sql = "DELETE FROM alumno WHERE CodigoAlumno = ? ";
    try {
      //1. Obtener la conexi�n
      Connection conn = DBConnection.getConnection();
      //2. Obtenemos la sentencia Java (PreparedStatement)
      PreparedStatement pstmt = conn.prepareStatement(sql);
      //-- 2.1. Setear los par�metros din�micos
      pstmt.setString(1, CodigoAlumno);
      //3. Ejecutar la sentencia (se recupera en un cursor)
      pstmt.executeUpdate();
      //7. Cerrando los recursos JDBC
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
   
   public void actualizar(AlumnoBean alumno) {
    String sql = "UPDATE alumno SET IDEduc = ?, NombreAlumno = ?, ApePaterAlumno = ?, ApeMaterAlumno = ?, FecNacAlumno = ?, TutorAlumno = ?, EmailTutorAlumno = ?, telefonoTutorAlumno = ? WHERE CodigoAlumno = ? ";
    try {
      //1. Obtener la conexi�n
      Connection conn = DBConnection.getConnection();
      //2. Obtenemos la sentencia Java (PreparedStatement)
      PreparedStatement pstmt = conn.prepareStatement(sql);
      //-- 2.1. Setear los parametros dinamicos
      pstmt.setString(1, alumno.getTxtIDEduc());
      pstmt.setString(2, alumno.getTxtNombreAlumno());
      pstmt.setString(3, alumno.getTxtApePaterAlumno());
      pstmt.setString(4, alumno.getTxtApeMaterAlumno());
      pstmt.setDate(5, new java.sql.Date(alumno.getTxtFecNacAlumno().getTime()));
      pstmt.setString(6, alumno.getTxtTutorAlumno());
      pstmt.setString(7, alumno.getTxtEmailTutorAlumno());
      pstmt.setString(8, alumno.getTxttelefonoTutorAlumno());
      pstmt.setString(9, alumno.getTxtCodigoAlumno());
      //3. Ejecutar la sentencia (se recupera en un cursor)
      pstmt.executeUpdate();
      //7. Cerrando los recursos JDBC
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    } 
   }    
   
}
